package org.dromara.common.translation.annotation;

import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import org.dromara.common.translation.core.handler.TranslationHandler;

import java.lang.annotation.*;


/**
 * @Author 刘武贵
 * @Date 2024/8/15 22:00
 * @Description 功能描述：通用翻译注解
 */
// 指定注解可以被继承
@Inherited
// 指定注解在运行时保留
@Retention(RetentionPolicy.RUNTIME)
// 指定注解可以应用于字段和方法
@Target({ElementType.FIELD, ElementType.METHOD})
// 指定注解应被文档工具记录
@Documented
// 指定注解是Jackson的一部分
@JacksonAnnotationsInside
// 指定使用TranslationHandler进行序列化
@JsonSerialize(using = TranslationHandler.class)
public @interface Translation {

    /**
     * 类型 (需与实现类上的 {@link TranslationType} 注解type对应)
     * <p>
     * 默认取当前字段的值 如果设置了 @{@link Translation#mapper()} 则取映射字段的值
     */
    String type();

    /**
     * 映射字段 (如果不为空则取此字段的值)
     */
    String mapper() default "";

    /**
     * 其他条件 例如: 字典type(sys_user_sex)
     */
    String other() default "";

}
